#ifndef SQLBetweenExpr_HEADER_H
#define SQLBetweenExpr_HEADER_H


#include "../SQLExpr.h"
#include "../SQLExprImpl.h"

class SQLASTVisitor;

class SQLBetweenExpr : virtual public SQLExprImpl
{

private:
  // static long serialVersionUID = 1L;
  BOOL_ptr xnot;

public:
  SQLExpr_ptr testExpr;
  SQLExpr_ptr beginExpr;
  SQLExpr_ptr endExpr;

  SQLBetweenExpr();
  virtual ~SQLBetweenExpr();

  SQLBetweenExpr(SQLExpr_ptr testExpr, SQLExpr_ptr beginExpr, SQLExpr_ptr endExpr);

  SQLBetweenExpr(SQLExpr_ptr testExpr, BOOL_ptr xnot, SQLExpr_ptr beginExpr, SQLExpr_ptr endExpr);
  SHAREDOBJECT(SQLBetweenExpr);

  SQLExpr_ptr getTestExpr();

  void setTestExpr(SQLExpr_ptr testExpr);

  BOOL_ptr isNot();

  void setNot(BOOL_ptr xnot);

  SQLExpr_ptr getBeginExpr();

  void setBeginExpr(SQLExpr_ptr beginExpr);

  SQLExpr_ptr getEndExpr();

  void setEndExpr(SQLExpr_ptr endExpr);

  // int hashCode();
  // BOOL_ptr equals(Object obj);
protected:
  void accept0(SQLASTVisitor_ptr visitor);
};
// typedef boost::shared_ptr<SQLBetweenExpr> SQLBetweenExpr_ptr;
#endif
